package com.yupi.springbootinit.mq.TtlMq;

import com.rabbitmq.client.*;

import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;

public class SingleConsumer {
    public static final String QUEUE_NAME= "ttl_queue";
    public static void main(String[] args) {
        //创建连接工厂
        //1：创建一个连接工厂对象，对象可以连接Rabbit服务
        ConnectionFactory factory = new ConnectionFactory();
        //2：指定连接服务的主机名以及账号密码
        factory.setHost("192.168.1.183");
        factory.setUsername("lfc");
        factory.setPassword("123456");
        //3：利用工厂创建一个连接Rabbit服务
        try {
            Connection connection = factory.newConnection();
            //4：通过连接常见一个新的频道
            Channel channel = connection.createChannel();
            //设置过期时间
            Map<String, Object> ttlArgs = new HashMap<>();
            ttlArgs.put("x-message-ttl", 5000);
            //5：声明消息队列
            //通过这个频道声明一个消息队列，指定消息队列名称，消息队列重启后队列是否丢失，是否只允许当前创建这个消息队列的连接操作消息队列，
            channel.queueDeclare(QUEUE_NAME,true,false,false,ttlArgs);
            //6：处理消息
            DeliverCallback deliverCallback = (String consumerTag, Delivery delivery)->{
                String message = new String(delivery.getBody(), StandardCharsets.UTF_8);
                System.out.println("接收到的消息："+message);
            };
            //7：消费消息
            channel.basicConsume(QUEUE_NAME,false,deliverCallback,consumerTag -> {});
        } catch (Exception e) {
            System.out.println(e.getMessage());
            throw new RuntimeException(e);
        }
    }
}
